package md.specialEqp.type;
//type包 还少个索道的大类型。
//9000客运索道F000安全附件7000压力管道元件 这三个type特种设备没有做独立参数表，减少派生实体类。

import lombok.*;
import lombok.experimental.SuperBuilder;
import md.specialEqp.Eqp;
import org.fjsei.yewu.filter.Uunode;
import org.hibernate.search.mapper.pojo.mapping.definition.annotation.Indexed;

import jakarta.persistence.Entity;
import java.time.LocalDate;

//子类不能再做@org.hibernate.annotations.Cache() 与 @Inheritance(strategy=)和@Version注解的。
//java中的接口之间可以实现多继承，也可以实现多实现。但是java中的类只能实现单extends继承

/** 3000电梯  TB_ELEV_PARA  电梯技术参数表,电梯才会有维保单位的，其它类设备都没有。
 * 计费需要的参数，修改需要严格审批的参数，常见的要求立刻统计的参数{OLAP非实时统计参数非常规统计参数都可除外}。
 * 参数放在那里：看是否需要后端服务器java普通的快捷访问而定，若放在非结构化JSON数据中，前端访问没问题，后端很难操作。
 * 老旧电梯评估？算特别业务类型{监督检验是用户发起的，定期一般法定时间有周期的，委托是自愿；这个有点强制但是非定期的非用户发起是监管主动发现的}=临时统计抽取处理标记。
 * 旧平台把代码直接放在Oracle数据库表的说明中：只有COMMENTS: ""为空的才不会在jsp页面上输出显示和编辑的；否则旧DB表所有字段都默认是可编辑显示字段。
 * 技术参数用途：收费计算需要的；监察验证准入发证书看的；报告需要读取的；给检验人员翻阅查看的；有些字段其实实际作废或根本就没人用过吧(全都没填有效数据)。
 */
//@Inheritance(strategy=InheritanceType.SINGLE_TABLE)


@SuperBuilder(toBuilder=true)
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Indexed(enabled=true, index="ee3")
public class Elevator  extends Eqp implements Uunode {
    /**IF_SPEC_EQP特种电梯； IF_SPEC_EQP 是否特殊设备
     * 特种电梯，加收30%; 总共才10台啊，而且旧平台还是放在Eqp表
     * 其它种类都没用到该字段 Eqp.IF_SPEC_EQP 是否特殊设备
     * JYB:"IF_SPEC_EQP", COMMENTS: "是否特殊设备（0不是，1是）", DATA_TYPE: "VARCHAR2" 监察没有？
     */
    private Boolean spec;
    /**IF_UNNORMAL是否非标电梯， ？非标 和 特种不一样概念？技术上的非标，特种电梯是使用范围上的。
     * 总共才7台啊， 是 否 / null， 默认=不是非标的电梯。
     * "IF_UNNORMAL", COMMENTS: "是否非标电梯", DATA_TYPE: "VARCHAR2"
     */
    private Boolean nnor;
    /**是否属于旧楼加装电梯  。 Eqp.IF_OLDBUILD_INST旧楼加装;
     * 计费优惠依据 ，数量不多
     * 不同概念！ 是否老旧电梯：IF_OLD_DT，是否老旧电梯评估 IF_OLDDED_DT_PG_q
     * JYB:"IF_OLDBUILD_INST", COMMENTS: "是否属于旧楼加装电梯（0不是，1是）", DATA_TYPE: "VARCHAR2"
     * */
    private Boolean oldb;

    /**ELEFLOORNUMBER电梯层数，计费
     * 电梯旧系统有字段 "ELEFLOOR", "层/站", string类型的。本平台舍弃掉。 ?监察可能字符型的吗
     * 本平台早分解为3个变量的：  .flo(pms.getElefloornumber())
     *     private Short svp.电梯站数;      .电梯站数(pms.getElestadenumber()).
     *     private Short svp.电梯门数;      .电梯门数(pms.getEledoornumber())
     *本平台从旧系统导出数据时刻并没有参照“ELEFLOOR”字段的！
     *监察旧平台有"ELEFLOOR", COMMENTS: "层站", DATA_TYPE: "VARCHAR2"该字段还在旧的检验就作废了！@申请单处置看情况：？
     * */
    private Short  flo;

    /**RUNVELOCITY运行速度 ，米/秒 运行速度(m/s)"RUNVELOCITY"
     */
    private String  vl;

    /**ELEHEIGHT 3000提升高度
     * DT_ELEHEIGHT 自动持梯提升高度
     * */
    private Float  hlf;
    /**SLIDWAY_USE_LENG 3300人行道使用区段长度，计费有用
     * 人行道使用区段长度（自动人行道）单位是(m)"SLIDWAY_USE_LENG"
     * Float 误差！ 精度很低 6位数都无法确保精确的,5位数可保。
     * */
    private Float  lesc;
    /**名义宽度(自动扶梯/自动人行道)(mm)"NOMI_WIDTH", 有可能被当成收费依据;
     *旧平台类型是字符串： "/" ，有些是 米 做单位的。实际可能扩充定义：电梯最大可开启的面宽方向宽度(能塞得进来)。
     * */
    private String  wesc;

    /**控制屏型号"CONSCRTYPE" CON_SCREEN_TYPE
     * 有可能被当成过滤常规统计依据;
     * */
    private String  cpm;
    /*控制屏出厂编号"CONTSCRCODE"*/
    //private String  cpi;
    /**曳引机型号"TRACANGTYPE"
     * 有可能被当成过滤常规统计依据;
     * */
    private String  tm;
    /*曳引机出厂编号"TRACANGLEAFACNUMBER" 有重复的*/
    //private String  tno;
    /**电动机(驱动主机)型号"ELEC_TYPE"*/
    private String  mtm;
    /*电动机(驱动主机)编号"ELEC_COD"*/
    //private String  mtno;

    /**缓冲器形式"BUFFER_MODE"
     * 19个取值。 前端Enum{后端不管，当成字符串，前端控制输入列表，初始化数据要校对Enum处理}
     * */
    private String  buff;

    /**额定载荷(kg)"RATEDLOAD"
     * 整数，行业惯例单位是 kg;   改成浮点数？
     * 类型修改以后【JPA数据库】旧表也不会自动做变更的！只能手动改类型。
     * */
    private String rtl;

    /**加装的附加装置，是否加装附加装置"IF_ADDDEVICE"
     * 新 增加的字段, "/" 否，"自动平层装置" "IC卡和能量反馈装置"
     * 旧平台是: '是否加装附加装置'：
     * */
    private String aap;
    /**轿厢意外移动保护装置型号"CAR_PROTECT_TYPE"*/
    private String  prot;
    /**开门方式"DOOR_OPEN_TYPE"
     * 常用7种，+不常用48种; 前端Enum方式处理;
     * */
    private String  doop;
    /**限速器型号"RESTSPEEDTYPE"
     * "DS-6SS1B(轿厢侧)；DS-6SS1B(对重侧)"
     * */
    private String  limm;
    /**控制方式"CONTROL_TYPE"
     * 常用7种，+不常用46种; 前端Enum方式处理;
     * */
    private String  opm;

    /**最后一次制动实验时间LAST_BRAKE_TASK_DATE  IF_BRAKE_TASK, --是否制动实验
     * 最后一次制动试验日期,  是否制动试验IF_BRAKE_q= LAST_BRAKE_TASK_DATE is null
     * 老旧电梯评估会修改
     * JYB:"LAST_BRAKE_TASK_DATE", COMMENTS: "最后一次制动实验时间", DATA_TYPE: "DATE"
     * */
    private LocalDate lbkd;
    /**下次制动实验时间NEXT_BRAKE_TASK_DATE  电梯才有的字段
     * 老旧电梯评估会修改 IF_OLDDED_DT_PG ,是否老旧电梯：IF_OLD_DT作废?, 日期+预期寿命,电梯不看寿命只认定检结论的;
     * 定检时刻 确认老旧电梯评估的实际需求。
     * JYB:"NEXT_BRAKE_TASK_DATE", COMMENTS: "下次制动实验时间", DATA_TYPE: "DATE"
     * 增加独立可搜索字段？ 没必要，跟随任务逻辑判定。
     * "仅 乘客电梯 , 每五年进行一次的 125%载重量 额定速度的 制动试验"， 和收费无关也没分项报告。
     * */
    private LocalDate nbkd;
    //按照品种；1常用都输入的程度，2不常输入的则是再按照汉字顺序 排序一起。 常规统计过滤，计费，后端的控制 不会用到这些参数；
    //-代表还未实际采用(前端的管辖,后端不关注)。
    /*
    DIP_ANGLE 倾斜角度(自动扶梯/自动人行道)：
    SAFECLAMTYPE 安全钳型号： 几百种， ？出问题才需要抽取做过滤和排查安全的--业务需求？。OLAP方式,突发特殊定制的作业。
    SAFECLAMNUM 安全钳编号：
    FB_SUBSTANCE 爆炸物质(防爆电梯)： 周围存在的气体。
    COMPENTYPE 补偿方式
    FLOORDOORTYPE 层门型号
    BOTTOMDEPTH 底坑深度(m)
    ELECTROPOWER 电动机功率
    ELEC_STYLE 电动机类型， 重新定义了吗；实际数据填写成了 重复定义字段?:电动机(驱动主机)型号"ELEC_TYPE"
    ELEC_REV 电动机转速："960" "1201-1462" "1000/250" "127.3" "960/1150"，不用规整分解变成多个属性/复合字段！业务需求驱动？不要求做过滤比较大小的=仅仅就是给人看的备注形式。
    ELEDOORNUMBER 电梯门数
    ELESTADENUMBER 电梯站数
 -  ELEWALKDISTANCE 电梯走行距离(m) ？极度少条，弃用？
    TOPHEIGHT 顶层高度(m)
    TOP_PATTERNS 顶升形式(液压电梯)
    COUNORBTYPE 对重导轨型式
    COUP_ORB_DIST 对重轨距
    COUP_NUM  COUNTERAMOUNT 对重块数量 ,明明数字非得做成文本形式字段;"26块" "29+2" "高度：1.070m" "厚34薄9"
    COUP_LIMIT_COD 对重限速器编号  不是唯一的序号 "SG1508352；SG1508345"。
    COUP_LIMIT_TYPE 对重限速器型号
 -   RATINGVOLTAGE 额定电流(A) ？极度少条 ,规整意图的 =新添加的字段?
    RATED_CURRENT 额定电流(A)： "26.5" ，少数有复合形式的字段 "24/20" "18/17"
 -   RATINGCURRENT 额定电压(V) ？极度少条
    RATED_PEOPLE 额定载人 额定载人数 ："2000" "1050" "13" "21"  混淆变成 额定载荷(kg)？已经有独立字段。 人数还是kg啊?
 -   PREVENT_SETTLEMENT 防沉降组合 ？极度少条
 -   LADINCANGLE 扶梯倾斜角 ？极度少条
 -   WORK_LEVL 工作级别 ？极度少条
  -  MANAGEMODE 管理方式
    BUFFERNUMBER 缓冲器编号 '1408607;1408610'
    BUFFERTYPE 缓冲器型号
    BUFFER_MAKE_UNT 缓冲器制造单位 ?文本就可以; 2个名字拼凑:"镇江朝阳机电科技有限公司;上海优意工业设备有限公司" "ACLA-WERKEGMBH" "沈阳东阳聚氨酯有限公司" "江阴市聚丰电梯配件有限公司；杭州沪宁电梯部件股份有限公司" "德国纽伦堡"
    CAR_HIGH 轿厢高(杂物电梯)(m) 实际大多是mm单位
    CAR_WIDTH 轿厢宽(杂物电梯)(m) 实际大多是mm单位
    CAR_DEEP 轿厢深(杂物电梯)(m) 实际大多是mm单位
    CAR_ORB_DIST 轿厢轨距 mm;
    CAR_UPLIMIT_EV 轿厢上行限速器电气动作速度(m/s); 两个取值复合？采用文本类型 "1.20-1.45" "1.21/1.45" "0.65"
    CAR_UPLIMIT_MV 轿厢上行限速器机械动作速度(m/s) "2.22-2.27"
    CAR_UPLIMIT_MV 轿厢上行限速器机械动作速度(m/s)： 类似这样参数在注册时给人观摩的，出报告可能用到，检验员查询资料可能用，就如图纸，设备部件参数。
    CAR_DOWNLIMIT_EV 轿厢下行限速器电气动作速度(m/s)
    CAR_DOWNLIMIT_MV 轿厢下行限速器机械动作速度(m/s) "(119m/min)1.98"  ? 这4个字段应该是历史遗留取值问题。
    CAR_PROTECT_COD 轿厢意外移动保护装置编号 可重复序列号 "/"代表没有意义吗？【上级装置没有】， 空缺="" ？="不明"
    CAR_PROTECT_TYPE 轿厢意外移动保护装置型号
    CAR_DECORATE_STA 轿厢装修状态
  -  SAFE_DOOR 井道安全门(液压电梯)： "无" "是" "有"
  -  DOOR_OPEN_DIRCT 开门方向(杂物电梯) ,取值雷同 ‘开门方式’
    LOCK_TYPE 门锁型号(液压电梯)： 不见得都是液压电梯？
    FB_AREALEVEL 区域防爆等级(防爆电梯）：
    DRIV_APPROACH 驱动方式(杂物电梯)：
    UP_PROTECT_MODE 上行保护装置形式： 遗留数据有的带编码
    UP_PROTECT_MODEANDTYPE 上行保护装置形式/型号： 上行保护装置型号； 两个字段合并输入的。
    UP_PROTECT_COD 上行超速保护装置编号： "SG1336798;↵↵SG1336805"
  -  UP_PROTECT_TYPE 上行超速保护装置型号：  ？雷同 上行保护装置型号
    UP_RATED_V 上行额定速度(液压电梯)(m/s)：
  -  DESIGNCRITERION 设计规范： "GB7588-2003"
    IF_SHIP 是否船舶电梯： 总共就4台
    IF_PUB_TRAN 是否公共交通型： "非公共交通型"
    IF_CAR 是否汽车电梯：
    IF_SCANMOBILE 是否手机信号覆盖： ""？默认算有 "否" "是" "/"？等同无此项没有, "签订协议", " "
    V_PROPOR 速比： "55:2"
    RUNDLEBREADTH 梯级宽度(m)： mm; 才几条；
    DRAG_MODE 拖动方式：     选择框:8项;
    DOWN_RATED_V 下行额定速度(液压电梯)(m/s)： ，很少条；
    RESTSPLEAFACNUMBER 限速器出厂编号： "19N3C10-530-13"
    LIMIT_MV 限速器机械动作速度(液压/杂物电梯)(m/s)： 文本，"1.13" "上：0.87/下：0.79" "1.22/1.24" ，很少条； 可能复合上下行速但是可能只有单个速度表示。
    LIMIT_ROP_DIA 限速器绳直径(mm)：  "φ 8" "φ8" "8" '8mm' "6.3" "8 "
 -   LIMIT_MAKE_UNT 限速器制造单位： ？极度少条
    WIRE_ROP_NUM 悬挂钢丝绳数(液压电梯)： "5×2" "6根"    ，很少条；
    WIRE_ROP_DIA 悬挂钢丝绳直径(液压电梯)： mm; "10mm" "/"  ，很少条；
    DRAG_PROPOR 曳引比： '2:1"
    DRAG_PITCH_DIA 曳引轮节径(mm)：   "现场示标明" "330.0" "φ620"
    DRAG_NUM 曳引绳数：(钢带条数)  ?@很多没有录入数据的@！？  "5" '5(钢带)'  "6根" "6"
    ？？曳引绳类别 是否曳引绳是钢带，= 复合钢带，电梯钢丝绳; //电梯维保单位或者是质监局检查到该电梯钢丝绳直径小于原钢丝绳的7%就必须更换; 钢带设计寿命为20年，是传统钢丝绳寿命的2~3倍;
    DRAG_DIA 曳引绳直径(mm)：@很多没有录入数据的@ ?钢带 有直径吗？ "13""φ8" "9.3" "12" "10mm" "φ 12" ‘扁平钢带30×3’  ‘30.0(宽)×3.0(厚)’ "3×30" "3x330" "30mm宽,2.5mm厚钢带" "30.0（宽）×3.0（厚）" 30mmx3mm
    if 复合钢带 : [曳引钢带的规格，文本类型] 钢带宽度 mm，X 钢带厚度 mm;  else  曳引绳直径(mm) 【数字】
    PUMP_COD 液压泵编号(液压电梯)：   ？极少条
    PUMP_POWER 液压泵功率(液压电梯)：KW; "29.4"  ？极少条
    PUMP_FLUX 液压泵流量(液压电梯)： L/M;  "180" "430" "2×360"  ？极少条
    PUMP_TYPE 液压泵型号(液压电梯)： ？极少条  600L/M 51.5KW
    PUMP_SPEED 液压泵转速(液压电梯)： r/min  "2750" "24/12" 转每分
    OIL_TYPE 液压油型号(液压电梯)：  "L-HM46" ？极少条
    CYLINDER_NUM 油缸数量(液压电梯)： "2"
    CYLINDER_STYLE 油缸形式(液压电梯)： 组合框 ["浸油式", "非浸油式","油浸式","双节式（侧置）"]
 -   RUNMETHOD 运行方法： ？极少条 ,数字类型？  "9000人/小时" "7300P/h" "9000 P/h"
    FB_MACHINEFLAG 整机防爆标志(防爆电梯)： ？极少条   "ExdeiboⅡBT4"
    FB_HGCOD 整机防爆合格证编号(防爆电梯）： ？极少条  "GYB081751X"
  -  MANUFACTURECRITERION 制造规范：  "7588-1"
  -  MAINSTRFORM 主体结构形式： ？作废
    * */

/* "IF_PARAM"监察没有字段；Eqp.IF_PARAM第一位，是否限速器校验(1-5杂物电梯5进制)?=0,'1',任务生成? IF_PARAM = '1'表示需要限速器校验。限速器动作速度校验
    SUBSTR(B.IF_PARAM, 1, 1) = '1' AND A.EQP_VART = '3430' AND B.LAST_ISPOPE_TYPE2 NOT IN ('2', '602'))--杂物电梯5年一检限速器  FIRSTUSE_DATE AND B.EQP_SORT NOT IN ('3300')--15年以上都要做限速器
    @问题：谁维护，自动判定？检验历史报告证据；规则可连续性;
    --制造日期15年以上电梯生成委托的评估报告,与定检任务一起都划回给分院? 规则可连续性
    限速器动作速度校验？放入台账？监察有没有啊，不好！ 放入检验历史数据，报告json，isp.有存在该分项报告-日期, 人工判别吗? 对此负责的责任人是谁。前端提示检验责任人。
* */

}




//不可改技术参数：控制屏出厂编号"CONTSCRCODE"控制屏型号"CONSCRTYPE"电梯层数"ELEFLOORNUMBER"电动机(驱动主机)型号"ELEC_TYPE"缓冲器形式"BUFFER_MODE"额定载荷(kg)"RATEDLOAD"是否加装附加装置"IF_ADDDEVICE"
// 人行道使用区段长度（自动人行道）(m)"SLIDWAY_USE_LENG"名义宽度(自动扶梯/自动人行道)(mm)"NOMI_WIDTH"轿厢意外移动保护装置型号"CAR_PROTECT_TYPE"电动机(驱动主机)编号"ELEC_COD"
// 运行速度(m/s)"RUNVELOCITY"曳引机型号"TRACANGTYPE"曳引机出厂编号"TRACANGLEAFACNUMBER"开门方式"DOOR_OPEN_TYPE"限速器型号"RESTSPEEDTYPE"控制方式"CONTROL_TYPE"
//@NoArgsConstructor缺少导致 No default constructor for entity:  : md.specialEqp.type.电梯
/*
* 电梯才有的字段 Task.IF_BRAKE_TASK, --是否制动实验, 任务根据年限决定是否制动；
北京市政策：对于投入使用年限不满10年的电梯(公众聚集场所使用的电梯除外)和杂物电梯，经具有一定规模的维保单位申请，检验检测方式调整为1年定期检验后，
* 次年转变为自行检测。为了确保安全可靠，在自检92项定期检验外，再增加30项自检项目，其中有24项为严于国家标准的企业标准。再由检验机构对自行检测结果
* 实施不低于5%的抽查比例。
* 使用单位委托电梯检验机构或型式试验机构对老旧电梯进行安全评估，确定电梯更新改造大修方案和继续使用条件。
* 福建、杭州、深圳等地电梯安全管理办法都要求，电梯使用年限达到15年时，应进行安全风险评估，根据评估结论确定继续使用电梯的条件或对电梯进行修理、改造、更新。
* 老旧电梯安全评估报告会给出具体的维修意见，但报告只是可行性建议，没有强制力，主动权还是掌握在小区业主、物业手里。不过，对于不按照意见执行的使用单位，
* 省特检院将通过缩短年检周期、增加日常维保频率保证电梯正常运行，而对于年检不合格的电梯，将发具有强制力的整改通知书，整改不合格，则只能关停。
* 电梯锅炉不能在监察首检设备录入新增。
*/

/* @数据库修改脚本： 【HS反方向关联查询必要的】外键约束对于数据完整性非常重要，需手动为外键字段创建索引。建外键约束CONSTRAINT FOREIGN KEY时，不会自动为外键字段创建索引。
   【字段类型变更的】先 SET enable_experimental_alter_column_type_general = true;
   报错索引只能先删除INDEX eqp_oid_svu_id_idx (oid ASC, svu_id ASC) STORING (dtype, address, cand, cerd, cert, cnam, cod, cpa, cping, crdate, dense, expire, fail, fno, impt, insd, lat, level, lon, lpho, mkd, model, money, move, nxtd1, nxtd2, nxttd, ocat, pa, plat, plcls, plno, rcod, reg, regd, rnam, seimp, sno, sort, subv, svp, titl, type, unqf1, unqf2, uscd, used, ust, vart, version, vital, asemb, bmod, form, fuel, power, pres, wall, fulw, highs, insul, jakm, mdi, mont, pnum, prs, rtlf, vol, weig, mtm, pow, auxh, cap, cotr, cpi, cpm, cvl, flo, grab, hlf, hlfm, jobl, lmv, luf, luff, metl, miot, mom, mvl, nnor, ns, occa, opm, part, pcs, pcw, rang, rtv, rvl, scv, span, suck, tm, tno, two, twoc, vls, walk, whole, wjib, matr, temp, angl, grad, high, leng, mbig, sdia, vl, rtl, aap, buff, doop, lbkd, lesc, limm, nbkd, oldb, prot, spec, wesc, aid, insu_id, isp1_id, isp2_id, ispu_id, ispud_id, makeu_id, mtu_id, owner_id, regu_id, remu_id, repu_id, useu_id, usud_id, vid),
   只好临时 drop index eqp_oid_svu_id_idx 等两个 STORING牵涉字段的也算！；
   最后 alter table eqp alter column rtl type varchar(255) using rtl::varchar(255);
* */
